Skip to content

HIR ty lowering: Clean up & refactor the lowering of type-relative paths #140218

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 7 commits into from
May 23, 2025

Conversation

fmease
Copy link
Member

@fmease fmease commented Apr 23, 2025

While rebasing #126651 I realized that HIR ty lowering could benefit from some spring cleaning now that it's been extended to handle RTN and mGCA paths.

More seriously, similar to my merged PR #118668 which unified the handling of all associated item constraints (assoc ty, const (ACE) & fn (RTN)), this PR (commit 695fcf5) partially1 deduplicates the resolution code for all type-relative paths (assoc ty, const (mGCA) & fn (RTN)).

Why? DRY'ing that part of the code means PR #126651 will automatically support RTN paths like Ty::AssocTy::assoc_fn(..) and it also implies shared diagnostic code and thus better diagnostics for RTN.


The other commits represent cleanups, renamings, moves. More notably, I've renamed path lowering methods to be a lot more descriptive, so ones lowering QPath(Resolved) paths now have _resolved_ in their name and ones lowering QPath(TypeRelative) paths now have _type_relative_ in their name. This should make it stupidly obvious what their purpose is.


Best reviewed commit by commit. The changes are close to trivial but the diff might make it look hairier.
r? compiler-errors

Footnotes

  1. Sadly, I couldn't unify as much compared to the other PR without introducing unnecessary unreachable!()s or rendering the code otherwise illegible with flags and micro helper traits.

@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. labels Apr 23, 2025
@fmease fmease force-pushed the hirtylo-clean-up-path-low branch from 0100118 to 3d66b7b Compare April 23, 2025 20:08
@bors

This comment was marked as resolved.

@fmease fmease force-pushed the hirtylo-clean-up-path-low branch from 3d66b7b to c9df43c Compare May 5, 2025 15:04
@bors

This comment was marked as resolved.

fmease added 7 commits May 6, 2025 16:59
Name them more consistently, descriptively and appropriately.
Move large error reporting methods into the dedicated error module to
make the happy paths in HIR ty lowering more legible.
IMPORTANT: This leads to a tiny diagnostic regression that will be fixed in the next commit!
Most notably, this preserves the `(..)` of ambiguous RTN paths.
@fmease fmease force-pushed the hirtylo-clean-up-path-low branch from c9df43c to 8c37c8c Compare May 6, 2025 15:04
Copy link
Member

@compiler-errors compiler-errors left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thanks!! sorry for the review delay, and thanks for the careful refactoring.

r=me after rebase just for good measure

@compiler-errors
Copy link
Member

actually whatever, bors will figure out if it needs a rebase lol

@bors r+

@bors
Copy link
Collaborator

bors commented May 22, 2025

📌 Commit 8c37c8c has been approved by compiler-errors

It is now in the queue for this repository.

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels May 22, 2025
bors added a commit to rust-lang-ci/rust that referenced this pull request May 22, 2025
…iaskrgr

Rollup of 7 pull requests

Successful merges:

 - rust-lang#135562 (Add ignore value suggestion in closure body)
 - rust-lang#139635 (Finalize repeat expr inference behaviour with inferred repeat counts)
 - rust-lang#139668 (Handle regions equivalent to 'static in non_local_bounds)
 - rust-lang#140218 (HIR ty lowering: Clean up & refactor the lowering of type-relative paths)
 - rust-lang#140435 (use uX::from instead of _ as uX in non - const contexts)
 - rust-lang#141130 (rustc_on_unimplemented cleanups)
 - rust-lang#141286 (Querify `coroutine_hidden_types`)

Failed merges:

 - rust-lang#140247 (Don't build `ParamEnv` and do trait solving in `ItemCtxt`s when lowering IATs)

r? `@ghost`
`@rustbot` modify labels: rollup
@bors bors merged commit 3216098 into rust-lang:master May 23, 2025
6 checks passed
@rustbot rustbot added this to the 1.89.0 milestone May 23, 2025
rust-timer added a commit to rust-lang-ci/rust that referenced this pull request May 23, 2025
Rollup merge of rust-lang#140218 - fmease:hirtylo-clean-up-path-low, r=compiler-errors

HIR ty lowering: Clean up & refactor the lowering of type-relative paths

While rebasing rust-lang#126651 I realized that HIR ty lowering could benefit from some *spring cleaning* now that it's been extended to handle RTN and mGCA paths.

More seriously, similar to my merged PR rust-lang#118668 which unified the handling of all *associated item constraints* (assoc ty, const (ACE) & fn (RTN)), this PR (commit rust-lang@695fcf5) partially[^1] deduplicates the resolution code for all *type-relative paths* (assoc ty, const (mGCA) & fn (RTN)).

**Why**? DRY'ing that part of the code means PR rust-lang#126651 will automatically support RTN paths like `Ty::AssocTy::assoc_fn(..)` and it also implies shared diagnostic code and thus better diagnostics for RTN.

---

The other commits represent cleanups, renamings, moves. More notably, I've renamed path lowering methods to be a lot more descriptive, so ones lowering `QPath(Resolved)` paths now have `_resolved_` in their name and ones lowering `QPath(TypeRelative)` paths now have `_type_relative_` in their name. This should make it stupidly obvious what their purpose is.

---

Best reviewed commit by commit. The changes are close to trivial but the diff might make it look hairier.
r? compiler-errors

[^1]: Sadly, I couldn't unify as much compared to the other PR without introducing unnecessary `unreachable!()`s or rendering the code otherwise illegible with flags and micro helper traits.
@fmease fmease deleted the hirtylo-clean-up-path-low branch May 23, 2025 00:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants